組態軟件編程中對AIBUS通訊協議的理解
關鍵詞:AIBUS通訊協議、組態軟件
一、 通訊協議的正確理解
AIBUS協議及快速通訊:
早在1994年宇電推出的基于RS485通訊接口的AIBUS通訊協議,簡單高效又功能齊全。目前的產品在RS485通訊19200波特率下,平均每臺儀表讀取3個常用變量及1個參數的速度僅20ms,是常用如MODBUS協議的進口儀表的3-10倍以上,利用采用AIBUS協議的AI系列儀表組建FCS結構的計算機監控系統,每個串口連接50臺儀表仍能獲得滿意的數據刷新率,加上多串口及多機連網,無論組建小系統還是大、中型系統均可達到與DCS同等使用效果。
采用AIBUS協議的AI儀表在9600波特率下能在40ms內向上位機傳送4個重要數據,比采用MODBUS協議的進口儀表速度高3-10倍以上,因此即使采用廉價的RS485通訊,AIFCS也具備如DCS或FF、PROFIDBUS等高價現場總線系統同等的使用效果,并可以組建大型系統,而不象通常進口儀表那樣只能應用于小型系統。RS485不僅價格低,還具備布線簡單、對通訊線要求低及通訊距離長等優點。
AI系列儀表使用異步串行通訊接口,接口電平符合RS232C或RS485標準中的規定。數據格式1個起始位,8位數據,無校驗位,1個或2個停止位。通訊傳輸數據的波特率可調為4800~19200 bit/S,通常用9600 bit/S,單一通訊口所連接儀表數量大于40臺或需要更快刷新率時,推薦用19200bit/S,當通訊距離很長或通訊不可靠常中斷時,可選4800bit/S。AI儀表采用多機通訊協議,采用RS485通訊接口,則可將1~80臺的儀表同時連接在一個通訊接口上。串口調試設置如下圖:
根據宇電AIBUS通訊協議,AI儀表采用16進制數據格式來表示各種指令代碼及數據。AI儀表軟件通訊指令經過優化設計,標準的通訊指令只有兩條,一條為讀指令,一條為寫指令.以AI-808P為例利用此串口通訊工具與其通訊,當要讀儀表的設定值時,發送8個字節分別是:

即要發送的8個字節分別是81H 81H 52H 00H 00H 00H 53H 00H 儀表中的地址ADDR=1,00H是儀表的參數代號表示AI-808P的STEP程序段,53H 00H是校驗碼,采用16位求和校驗方式,讀指令的校驗碼計算方法為:要讀的參數代號*256+82+ADDR(10進制算法)這里是0*256+82+1=83轉換為16進制就是53H為校驗碼的低字節,00H是高字節,在發送的時候要倒置.
AI系列的儀表通訊協議中沒有說明測量值是哪一個參數代號,而是無論執行讀/寫指令后,儀表都會自動返回以下10個字節的數據:

例如我要讀取某一臺儀表的PV值,只要執行該儀表對應通訊協議中任意一個參數代號就可以有PV值返回,如圖2以讀取00H(給定值)這個參數代號為例:

圖2中40H 02H為返回的測量值高位在前,低位在后,讀取的時候要倒置(其他數據讀取時也是如此),也就是0240H,轉換成10進制就是57。6,有帶一位小數點。由于是讀00H這個參數代號的值,就是第7、8個這字節的數據,也就是01H在此例中儀表執行在第一段。
如果是寫參數,則發送以下8個字節:

舉寫(T01)1BH這個參數代號為例,寫入數為-1時,則要發送的8個字節是81H 81H 43H 1BH FFH FFH 43H 1BH如下圖:

寫指令的校驗碼計算方法為以下公式做16位二進制加法計算得出的余數(溢出部分不處理):要寫的參數代號×256+67+要寫的參數值+ADDR,若是要寫入負值時,則應當把負值轉換成補碼在轉換成10進制,算出的值減去65536換成16進制發送,所以要寫入-1時,57(1BH)*256+65535+1-65536=6979(1B43H)發送時要倒置。返回來的10個字節的數據中FFFF就是所寫的參數值-1。
對于AI系列儀表,不論是讀/寫任可一個參數都是用這兩條指令,編寫容易能完整的對儀表進行操作。二、AI-808PAK5S型儀表的程序通訊與MCGS組態軟件編寫內容:
與MCGS組態軟件通訊時,選擇宇光系列智能儀表的驅動,由于軟件中能設置的參數的代號只到19H,所以對于宇電程序型儀表只能通過編寫內部函數來實現讀寫1AH這個參數代號以后的參數,實現的方法;
①:要先在實時數據庫中建立好要讀的變量,如C01、T01……等以C01~T02為例,變量類型為數值型。
②:建立好后則進入運行策略進行策略組態,新建策略為循環策略或用戶策略,進入編寫腳本程序如下圖3,是讀以下參數的命令!setDevice(設備0,6,“read(26,1,C01)”),
意思是把26中這個參數代號中的數據讀到C01這個變量中;

③:寫參數的命令與讀是一樣的如,!SetDevice(設備0,6,“write(26,1,C01)”):寫數據應當建立的設備命令為用戶策略(不能用循環策略),如下圖4:

④:為了能在運行畫面中隨時寫入參數代號26以后的數值,應當在實時數據庫中建立與之前變量同等個數的變量,如下圖5;

⑤:在組態動畫窗口中,設置屬性時輸入與輸出時不能為同一個變量,應當設置為與之對應的一個,如C01對應sdc01……,做一個按鈕屬性設置為執行運得策略塊,在腳本程序中寫C01=sdc01如下圖6:

則在運行畫面中要設定某一值時都需點擊這個按鈕。
三、AI-3011開關量狀態在MCGS組態軟件上的讀取:
執行讀指令,儀表模塊上的開關量狀態按D0D1D2D3D4D5D6D7D8D9的順序,由低到高按二進制碼順序排列在參數編號R10中,它的數據低10位(D0-D9)表示對應的開關量狀態。舉例MCGS中的操作。
①:開關量狀態讀取:儀表的驅動選宇光系列智能儀表,表類型選擇AI-708,在設備內部屬性中讀寫SC這個參數就可了,操作方式為讀寫,小數點位置固定為0。開關量的狀態D0~D9在MCGS中是用10進制數表示的,例如以上各位均無繼電器輸出或外部開關量斷開時,SC中的參數值為0(二進制:0000000000000000)全部動作或外部開關接通時,SC參數值為1023(0000001111111111);例如:當D1、D2接通,其余斷開時,SC參數值為6(二進制數為0000000000000110)
②:開關量狀態的輸出:MCGS欲控制AI301系列儀表上的的繼電器動用時,向參數SC寫入對應當的狀態字即可,例如D0、D1、D2、D3、D6、D7為繼電器輸出,D4、D5、D6、D8、D9為開關量輸入,正常工作狀態時D5和D8接通,現需要使D0、D1、D3、D7繼電器接通其余端口保持正常工作狀態不變,應改變必須向參數編號SC寫入139(二進制:0000000010001011)注意的是,對于用作輸入的端口,則不應寫入1,必須寫入0,否則無論外部的開關是接通還是斷開,讀回的數據都是1。
4、現MCGS已經有最新帶幫助文件的驅動:不需要在策略中編寫內部函數來實現讀寫參數代號26以后的數據,可以直接在通道中讀寫(R0~R5AH),每個通道所對應的參數意義請參照宇電AIBUS通訊協議V7.0說明.
四、結語:
宇電發展至今,自己開發上位機軟件,功能強大,并與多家組態軟件公司合作,如:MCGS、組態王、力控……等,都能對儀表進行百分之百的操作。

提交
宇電AI溫度控制器在箱式電阻爐的應用
宇電AI-7048D5在玻璃非球面成型機上的應用
基于AIBUS與各PLC之間通訊及與AIFCS計算機系統組建
宇電AI-7048及AI-2070總線式無紙記錄儀在塑料機械上的應用
宇電AI儀表通過無線GPRS來實現遠程數據采集